import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建 axios 实例
const service = axios.create({
    baseURL: import.meta.env.VITE_API_BASE_URL || '/api', // 从环境变量获取 API 基础 URL
    timeout: 15000, // 请求超时时间
    headers: {
        'Content-Type': 'application/json;charset=utf-8'
    }
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // console.log('config', config);
        // // 在请求发送前做一些处理，例如添加 token
        // const token = localStorage.getItem('token')
        // if (token) {
        //   config.headers['Authorization'] = `Bearer ${token}`
        // }
        return config
    },
    error => {
        // 处理请求错误
        console.error('请求错误：', error)
        return Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        const res = response.data
        // 处理 HTTP 错误
        let message
        if (res && res.code != 1) {
            message = res.msg || '接口异常'
            ElMessage.error(message)
            return Promise.reject(res)
        }
        // 直接返回数据
        return res || response || {}
    },
    error => {
        console.error('响应错误：', message)
        return Promise.reject(error)
    }
)

// 封装 GET 请求
export function get(url, params) {
    return service({
        url,
        method: 'get',
        params
    })
}

// 封装 POST 请求
export function post(url, data) {
    return service({
        url,
        method: 'post',
        data
    })
}

// 封装 PUT 请求
export function put(url, data) {
    return service({
        url,
        method: 'put',
        data
    })
}

// 封装 DELETE 请求
export function del(url, params) {
    return service({
        url,
        method: 'delete',
        params
    })
}

// 导出 axios 实例
export default service